Побудова модуля управління системи контролю доступу на AVR-мікроконтролерах. Робота з інтерфейсами 1-Wire, I2C, SPI

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра захисту інформації

Інформація про роботу

Рік:
2010
Тип роботи:
Лабораторна робота
Предмет:
Інші
Група:
ІБ-43
Варіант:
29

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» Кафедра ЗІ  Лабороторна робота №5 Побудова модуля управління системи контролю доступу на AVR-мікроконтролерах. Робота з інтерфейсами 1-Wire, I2C, SPI з курсу "МІКРОПРОЦЕСОРНІ ПРИСТРОЇ" Варіант № 29 Виконала: ст. гр. ІБ-43 Прийняла: - Львів-2010 Мета роботи: – ознайомитись з принципами побудови модулів управління систем контролю доступу. Вивчити правила обміну інформацією через інтерфейси 1-Wire, I2C, SPI та ознайомитися з їх програмною реалізацією для AVR-мікроконтролерів на мові С в середовищі CodeVisionAVR. Завдання: Вивчити теоретичний матеріал. Вивчити основні властивості інтерфейсів 1-Wire, I2C, SPI та правила обміну даними по них, принципи роботи з мікросхемами DS1990A, DS1307, 25LC256, принципи побудови та функціонування СКД необхідні для виконання лабораторної роботи. Підготовити програму функціонування модуля управління СКД згідно індивідуального завдання в табл. 8. Алгоритм функціонування модуля управління СКД аналогічний описаному в пункті 2. - 90 5 6 Номер ключа, число, година, хвилина, тип події (вхід/вихід) 22.09.09 11:45:19   Текст програми #include <90S2313.h> #include <delay.h> // Підтримка 1-Wire інтерфейсу #asm .equ __w1_port=0x18 // Для підкл. iButton викор. PORTB .equ __w1_bit=5 // Вивід 5 - РВ5 #endasm #include <1wire.h> // Підтримака І2С інтерфейсу #asm .equ __i2c_port=0x18 // Для інтерфейсу I2C використовується PORTB .equ __sda_bit=1 // SDA = PB1 .equ __scl_bit=2 // SCL = PB2 #endasm #include <i2c.h> // SPI Settings //#define SPI PORTD #define NCS 3 //PD3 #define SCLK 4 //PD4 #define MOSI 5 //PD5 #define MISO 6 //PD6 // адреса масиву легальних ключів #define REG_KEY_ADDR 16 // адрера початку журналу #define EVENT_LIST 0x60 // максимальна кількість записів в журналі #define MAX_EVENTS 95 // маска для вибору необхідних даних з ГРЧ #define MASK 0b01110000 // час відкриття дверей (cек.) #define OPEN_TIME 10 typedef unsigned char BYTE; // структура одного запису реєстраційного журналу struct RegRec { unsigned char ID[8]; // ідентифікатор користувача BYTE date[3]; // 0 - дата, 1 - місяць, 2 - рік unsigned char type; // 1 - вхід, 0 - вихід } event; // передача одного байту через SPI // повертає отриманий байт BYTE SPI_SendByte(BYTE data) { BYTE temp, res = 0, mask = 0x80; while(mask) { // зберігаємо біт що поступив на вхід temp = PIND & (1<<MISO); if(temp) res|=mask; // формуємо вихідний біт PORTD.MOSI = (data & mask) && 1; #asm("nop"); delay_ms(10); PORTD.SCLK = 1; mask>>=1; PORTD.SCLK = 0; } return res; } // запис блоку даних через SPI void SPI_Write(const BYTE *buf, BYTE size, unsigned int addr) { if(!buf || !size || size>64) return ; PORTD.SCLK = 0; PORTD.NCS = 0; SPI_SendByte(0b00000110); // дозволити запис в пам'ять PORTD.NCS = 1; // завершити команду #asm("nop"); PORTD.NCS = 0; // розпочати команду SPI_SendByte(0b00000010); // код операції запису в пам'ять SPI_SendByte(addr>>8); // старший байт адреси SPI_SendByte((BYTE)addr); // молодший байт адреси // запис самих даних while(size) SPI_SendByte(*buf++), --size; PORTD.NCS = 1; } // запис блоку даних через SPI BYTE SPI_Read(BYTE *buf, BYTE size, unsigned int addr) { if(!buf || !size || size>64) return 1; PORTD.SCLK = 0; PORTD.NCS = 0; // розпочати команду SPI_SendByte(0b0000...
Антиботан аватар за замовчуванням

01.01.1970 03:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини